

import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.websocket.Session;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import view.ComodidadDTO;
import view.DestinoDTO;
import view.HabitacionDTO;
import view.HotelDTO;
import view.UsuarioDTO;

import com.google.gson.Gson;

import controller.Sistema;


public class Hotel extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("get a hotel");
		this.doPost(req, resp);
	}

	
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("post a hotel");
		HotelDTO hot = new HotelDTO();
		String msg="";
		String msgErr="";	
		
        ArrayList<DestinoDTO> destinos = Sistema.getInstancia().buscarDestinos();
        req.getSession().setAttribute("destinos", destinos);
        
        ArrayList<ComodidadDTO> comodidades = Sistema.getInstancia().buscarComodidades();
        req.getSession().setAttribute("comodidades", comodidades);        

		if ("saveHotel".equals(req.getParameter("action")))
		{			
			hot.setActivo(Boolean.valueOf(req.getParameter("estado")));
			hot.setCadena(req.getParameter("cadena"));
			hot.setCalificacionInterna(Integer.valueOf(req.getParameter("categoriaInterna")));
			hot.setCategoria(Integer.valueOf(req.getParameter("categoria")));
			hot.setCodigo(req.getParameter("codigo"));
			hot.setCodigoPostal(req.getParameter("codigoPostal"));			
			hot.setDescripcion(req.getParameter("descripcion"));			
			hot.setDomicilio(req.getParameter("direccion"));
			hot.setEmail(req.getParameter("email"));			
			hot.setNombre(req.getParameter("nombre"));
			hot.setTelefono(req.getParameter("telefono"));
			hot.setWeb(req.getParameter("web"));
			DestinoDTO des = new DestinoDTO();
			des.setId(Integer.valueOf(req.getParameter("destino")));			
			hot.setDestino(des);
			for (ComodidadDTO com : comodidades)
			{
				if (req.getParameter("comodidad"+ com.getId())!=null)
				{
					hot.getComodidades().add(new ComodidadDTO(Integer.valueOf(req.getParameter("comodidad"+ com.getId())), ""));
				}
			}

			
			if (req.getParameter("cantidadHabitaciones")!=null && Integer.valueOf(req.getParameter("cantidadHabitaciones"))>0)
			{
				for(int i=1;i<=Integer.valueOf(req.getParameter("cantidadHabitaciones"));i++)
				{
				
					HabitacionDTO h = new HabitacionDTO( Integer.valueOf(req.getParameter("idHabitacion"+ String.valueOf(i)))
							, ""
							, req.getParameter("nombreHabitacion"+ String.valueOf(i))
							, Integer.valueOf(req.getParameter("ocupacionMin"+ String.valueOf(i)))
							, Integer.valueOf(req.getParameter("ocupacionMax" + String.valueOf(i)))); 				
					
					hot.getHabitaciones().add(h);				
				}			
			}
			//hot.setImagenes(imagenes);						
			hot.setId(Integer.valueOf(req.getParameter("id")));			
			hot = Sistema.getInstancia().guardarHotel(hot);
			req.getSession().setAttribute("hotel", hot);	
			req.getSession().setAttribute("msg", "El hotel se ha modificado correctamente"); 
		}		
    	else     		
    	{
    		if (req.getParameter("id")!=null)
    		{
    			hot = Sistema.getInstancia().getHotel(Integer.valueOf(req.getParameter("id")));
    			if (hot!=null)
    			{	
    				req.getSession().setAttribute("hotel", hot);    			
    			}
    			else
    			{    				
    				req.getSession().setAttribute("msgErr", "No se ha encontrado el hotel");    			
    			}
    		}    
    		else
    		{
    			req.getSession().setAttribute("hotel", new HotelDTO());
    		}
    	} 		
 
		RequestDispatcher dispatcher = req.getRequestDispatcher("hotel.jsp");
		dispatcher.forward(req, resp);	 
	 }
    protected void dispatch(String page, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        if (page != null)
        {
            RequestDispatcher rd = request.getRequestDispatcher(page);
            rd.forward(request, response);
        }
    }
}
